/************************************************
*
*   filename:   scenes.h
*   date:       11/16/09
*
*   Created by
*       Kassandra Kaplan
*
*   purpose:
*       class that decides what game logic
*       to be used
*
*   Revisions:
*       - 11/16/09
*           Created header
*           Created initial methods
*
*   copyright 2009 by
*       Cy Cook
*       Kassandra Kaplan
*       Blaise Millegan
*       Jason Stafford
*
************************************************/

#ifndef SCENE_H_INCLUDED
#define SCENE_H_INCLUDED

#include "battles.h"

#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include <string>


#include "game_info.h"

using namespace std;

class scene
{
    private:
    int current_scene;
    battles * battle_mode;

    enum
    {
        loadup = 0,
        main_menu = 1,
        closing = 2,
        battle = 3,
        battle_load = 4

    };

    public:
    scene()
    {
        current_scene = loadup;
        battle_mode = new battles();
    };

    ~scene()
    {
        delete battle_mode;
    };

    void change_scene(int new_scene)
    {
        current_scene = new_scene;
    };

    bool update(game_info * main_game)
    {
        bool stop = false;
        switch(current_scene)
        {
                case loadup:
                current_scene = battle_load;
                main_game->load_game();

                break;
                case main_menu:

                case closing:

                case battle_load:
                battle_mode->init();
                current_scene = battle;
                break;
                case battle:

                stop = battle_mode->update(main_game);
                break;

                default:
                break;
        }
        stop = false;
        return stop;
    };

    void draw(SDL_Surface *screen, game_info * main_game)
    {
        switch(current_scene)
        {
                case loadup:

                case main_menu:

                case closing:

                case battle:
                battle_mode->draw(screen, main_game);
                break;

                default:
                break;
        }

    };
};

#endif
